package com.smoothnlp.nlp.model.crfpp;

import java.util.List;

/**
 * Created by zhifac on 2017/3/18.
 */
public abstract class Tagger {
    public boolean open(String[] args) {return true;}
    public boolean open(FeatureIndex featureIndex, int nbest, int vlevel, double costFactor) { return true; }
    public boolean open(FeatureIndex featureIndex, int nbest, int vlevel) { return true; }
    public boolean open(String arg) {return true;}
    public boolean add(String[] strArr) {return true;}
    public void close() {}
    public float[] weightVector() {return null;}
    public boolean add(String str) {return true;}
    public int size() {return 0;}
    public int xsize() {return 0;}
    public int dsize() {return 0;}
    public int result(int i) {return 0;}
    public int answer(int i) {return 0;}
    public int y(int i) {return result(i);}
    public String y2(int i) {return "";}
    public String yname(int i) {return "";}
    public String x(int i, int j) {return "";}

    public int ysize() {return 0;}
    public double prob(int i, int j) {return 0.0;}
    public double prob(int i) {return 0.0;}
    public double prob() {return 0.0;}
    public double alpha(int i, int j) {return 0.0;}
    public double beta(int i, int j) {return 0.0;}
    public double emissionCost(int i, int j) {return 0.0;}
    public double nextTransitionCost(int i, int j, int k) {return 0.0;}
    public double prevTransitionCost(int i, int j, int k) {return 0.0;}
    public double bestCost(int i, int j) {return 0.0;}

    public List<Integer> emissionVector(int i, int j) {return null;}
    public List<Integer> nextTransitionVector(int i, int j, int k) {return null;}
    public List<Integer> prevTransitionVector(int i, int j, int k) {return null;}

    public double Z() {return 0.0;}
    public boolean parse() {return true;}
    public boolean empty() {return true;}
    public boolean clear() {return true;}
    public boolean next() {return true;}
    public String parse(String str) {return "";}

    public String toString() {return "";}
    public String toString(String result, int size) {return "";}
    public String parse(String str, int size) {return "";}
    public String parse(String str, int size1, String result, int size2) {return "";}

    // set token-level penalty. It would be useful for implementing
    // Dual decompositon decoding.
    // e.g.
    // "Dual Decomposition for Parsing with Non-Projective Head Automata"
    // Terry Koo Alexander M. Rush Michael Collins Tommi Jaakkola David Sontag
    public void setPenalty(int i, int j, double penalty) {}
    public double penalty(int i, int j) { return 0.0; }
}
